www.siagri.it

Linux Elenco Comandi Utili

Elaborazioni a terminale

In linux l'utilizzo del terminale può far comodo in molte situazioni anche nei sistemi desktop e non solo quando si utilizzano servers di seguito un elenco di utili comandi con i links a molti dei posts di approfondimento presenti nel blog.

Un comandi semplice: visualizzare il contenuto di una cartella e passare nell cartella home

:~$ ls
maurizio remastersys backup 
:~$ cd ~

Un comando un po' più complesso: linearizzare un lista in questo caso degli x windows manager ( desktop manager )   installati in sistema linux

:~$  update-alternatives --list x-window-manager | cut -d "/" -f 4 | tr '\n' ', '| sed 's/\,$/\n/g'
Premessa

Per scrivere nella shell del  terminale i comandi su più righe  utilizzare "\" attenzione che non siano caratteri <space> dopo la \  perchè in tal caso esegue comunque il comando.

Ridirezionare l'output : Pipe |   redirect  >   append   >>

Con il piping | si invia l'output di un comando sull'input di un altro comando ( concatenazione di comandi )

ls | more          #Visualizzare i files di una directory una pagina alla volta 
ls | sort | tee stdout.txt  # Visualizza directory corrente( ls )| la ordina ( sort) e la salva ( tee ) nel file stdout.txt 
ls -la  >  stdout.txt    # Redireziona (redirect) l'output su file 
df -a  >>  stdout.txt    # Aggiungere (append) l'output del comando a un  file esistente
df -a  | tee  srdout     # Visualizzare l'output a video e rediregere con tee

Per eseguire su una stessa riga più comandi/programmi separarli con  ";" per eseguire un programma solo se il precedente ha avuto successo separare i pogrammi con  "&&"

Ricercare i comandi nella shell

history 
history | grep mount

per utleriori dettagli fare Come ricercare i comandi nella shell: history

Controllare  kernel e versione in uso

fare riferiemtno al post  Linux Version

comunque uname  -a consente di visualizzare le informazioni principali kernel versione a 32 o 64 bit sistema operativo ..

uname -a

Monitoraggio

Controllare e monitorare il sistema: cpu, memoria,schede di rete, ... con

nmon
top

Un aiuto per i comandi

Per ottenere informazioni sui comandi oltre all' opzione help sono disponibili i comandi:  whatisman, info ( il più completo ) .
Linux differenze tra whatis, man, info e l'opzione -help

Per altre informazioni Documentazione in una distribuzione linux

Controllare i task

ps -ef               # mostrare tutti i processi in esecuzione
ps  afx              # mostrare tutti i processi struttura ad albero 
ps ax | grep '[r]desktop'  # ricercare uno specifico processo in esecuzione
pgrep -l '.+'            # l'elenco dei processi con le regular expression

forma  pratica

ps fax | grep [s]sh     # ricercare uno specifico processo in esecuzione

cambiare la priorità di un processo

renice +4 `pgrep panel`
26360 (process ID) old priority 0, new priority 4

Informazioni su tutti i processi xterm

:~$ ps -fp $(pgrep -d, -x xterm)
UID        PID  PPID  C STIME TTY          TIME CMD
maurizio 27244     1  0 20:05 ?        00:00:00 xterm

visualizzare i processi che usano un device

sudo lsof /mnt/source

Mostrare i processi che usano più Processore, Memoria o Tempo (premendo P, M, T):

top      # visualizzatore di processi 
htop     # un top interattivo si controlla col mouse ( taskmager da temrinale )
Terminare un processo
kill 53467    # manda un segnale di terminazione al processo con ID specificato
kill -9       # chiedi al kernel di uccidere un processo
kill -9 -1    # uccidi tutti i processi (quelli dell'utente)

complichiamoci un po' la vita  fermiamo i processi/programmi vlc 

kill -9 `ps ax|grep '[v]lc' | awk '{print $1}'`

Uccidi una applicazione graficamente:

xkill (click sulla finestra del programma)

Visualizzare e cambiare Linux $PATH variable

Connessioni attive
sudo netstat -anpl | grep ssh    # controllare connessioni attive

Connessioni Remote

post dedicati:

Aprire connessione ssh

ssh -X utente@192.168.2.101

quindi ovviamente inserire password utente

ssh offre due servizi di trasferimento file  scp e sftp.  Il protocollo sftp consente non solo il trasferimento dei dati ma anche funzionalità di manipolazione dei file  è simile a ftp. Diversi file managers, nautilis pcmanfm.. supportano il protocollo  sftp consentendo ottime funzionalità di manipolazione file da remoto.

Copiare files tra computer diversi

scp -r dir utente@server:/dir/destinazione

usare "\" per continuare il comando in altra riga

scp -r dir \ 
utente@server:/dir-destinazione


Elencare, cercare,  gestire files e directories

 

i comandi in modo più articolato

Elencare i files

Visualizzare  l'elenco dei files dettagliato con piping , redirect, append

ls -l *eth*.?  # elenca i files con la substring eth e terminanti con un carattere 
ls -ltra       # elenca in dettaglio, data creazione decresente e files nascosti (a)
Occupazione di spazio

Determinare le dimensione di un file o di una cartella su disco.

du -hs * | sort -h -r     # visualizzare le directory ordinate per dimensione
du -h -xc /home

Controllare l'occupazione di spazio su disco è possibile utilizzare il comando

df -a     #  

Gestire files e directory

md dir            # o mkdir dir (md esteso mkdir ) crea una directory
md  -p dir1/dir2  # crea directory nidificate

cd ~maurizio      # vai nella directory home dell'utente maurizio
cd newdir         # postarsi nella directory newdir

pwd               # mostra l'attuale directory di lavoro

.

cp source_file  dest_file   # copia un file in un'altro file
cp -r source_dir dest_dir   # copia le directory ricorsivamente
cp -R source/* target

mv source_file dest_file   # rinomina un file, un link o una directory:

rm  file1 file2   # cancella un file o un link
rmdir  dir        # cancella directory vuote
rm -rf  dir       # cancella directory non vuote

Rinomina multipla di files

remame -v -n 's/.MIDI$/\.mid/' *.MIDI
rename -f 'y/a-z/A-Z/' *.wav

Modificare la data di un file

touch -d '2010-03-14' Dati.zip

Modificare la data di più files contemporaneamente

find /images/ -exec touch -d '2010-03-14' *.jpg {} \;

creare hard link  e soft link 

ln -s linked_file  link_sl   # crea un link simbolico
ln   linked_file  link_hl    # crea un hard link

Rsync
Copiare directory ricorsivamente con rsync

rsync -a source_dir/  target_dir/

I diritti di accesso ai file

chmod u+w file      # aggiungi il permesso di scrittura per l'utente corrente
chown -R newuser:newgroup dir  # cambiare user e gruppo  di una directory
.
chmod -R a+rX dir   # rendi la directory accessibile a tutti ricorsivamente
chmod o+x  file     # aggiungi il permesso di esecuzione per gli (others) altri utenti
chmod a+rX *        # rendi il file eseguibile da tutti

.

Mostrare gestire  il contenuto dei file

cat file1 file2        # Concatena e mostra il contenuto dei file:
more file1 file2       # Mostra il contenuto di più file (fermandosi ad ogni pagina):
less file1 file2       # simile a more (migliore: con più opzioni)
head -10 file          # mostra le prime 10 linee di un file
tail -10 file          # mostra le ultime 10 linee di un file:

.
Mostra solo le linee di un file contenenti una data sottostringa:

grep sottostringa file
grep -i sottostringa file    # cerca ignorando il maiuscolo/minuscolo:
grep -v sottostringa file    # Mostra tutte le linee escluse quelle contenenti la data sottostringa:
grep -r sottostring dir      # Cerca in tutti i file di una directory:

Ordina le linee in un file dato:

sort file
sort -u file (uniche)  # ordina le linee, mostrando quelle duplicate una sola volta:

Ricerca sostituzione testo 

sed il comando per la ricerca e la sostituzione di testo in un file

sed -i 's/testo da sostituire/nuovo testo/g' file.txt

sed -i -e 's@database_name_here@wordpress@' wp-config.php

Cercare con locate e find

locate

Ricerca veloce di files nel sistema.
Attenzione: la ricerca è indicizzata. Senza aggiornare il database di locate non trova i files nuovi

locate stringa 
locate postgresql*
sudo updatedb       # per aggiornare il database di locate
find

Trova tutti i file nella directory attuale (.) e nelle sue sottodirectory con log nel nome:

find . -name "*log*"
find  / -iname  "mysql"    # Cercare un una riccorenza testauale  ignorando maiuscuole  in tutto il filesystem

sudo find / -size +100M     # cercare file per dimensioni in tutto il file sistem

sudo find / -regex '.+\.cfg' | grep 'WA' # usare le regular expression  e grep

Trova tutti i file .pdf in dir e nelle sotto- directory ed esegui un comando su ciascuno:

find . -name "*.pdf" -exec xpdf {} ';'

cercare file maggiori di 100MB e visualizzare i dettagli con ls nella directory corrente

find ./ -size +100M -exec ls -l {} \;

cercare con find i  file maggiori di 50MB e visualizzamdo i file in forma essenziale con -exec ls e awk

sudo find / -type f -size +50M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

sempre con find -exec  e il comando file determinare  il tipo di file

find /home/maurizio/Pictures -type f -exec file '{}' \;
find ./ -iname "*.*" -mtime -10 -type f   # ricerca i files che sono stati modificati negli utlimi 10 giorni
rinomina multipla di files in subdirectories
find . -depth -iname "*.wav" -execdir rename 's/^(\.\/[^.]*)\.(.*)$/\U$1\E.$2/' {} \;
Cercare file duplicati
- findup  ( comando di FSLint )

- fdupes 

- rdfind 

 

________

Gestire gli user da terminale

post dedicati:

Modifica la password di un'utente

passwd [nomeutente]
Diventare root e/o user
su         # (su: switch user)
su -       # cambia anche percorso

diventare root in Ubuntu anche in assenza di uno user <root> impostato tradizionalmente 

sudo -s    # (sudo: super user do)
sudo su -  
gksudo  nautilus  ( avviare applicazione grafica con i permessi di root )

cambiare utente

su    maurizio    #  non cambia percorso )
su -  maurizio    # si posiziona nella home dello user )

Controllare servizi

 sysv-rc-conf  (debian / ubuntu  )

apt-get install sysv-rc-conf

oppure

chkconfig --list (centos /redhad) 

Impostare l'avvio automatico e il runlevel

chkconfig --level 35 postgresql on
Cambiare data

Aggiornare data e ora su internet

ntpdate <server>

cambiare data manualmente

date MMDDhhmmYYYY.ss     
MM:mese DD:giorno hh:ora mm:minuti YYYY:anno ss:secondi

Liberare memoria Ubuntu

Cron

Linux visualizzare un file log in tempo reale - log file real time view

tail -f file-name.log command
tail -f /var/log/apache2/access.log

Eseguire comandi in background 

nohup Command [Arg] &

nohup ping eurotech.com

Archiviare in linux con tar, bz2,gz e zip

post specifico: Comandi Linux per archiviare tar, bz2, gz e zip

estrarre file tar.gz

tar zxvf sopcast-player-0.8.5.tar.gz

estrarre file .gz

gzip -d eth_group.gz

comprimere in un file .tar.bz2 ( formato preferibile in linux )

tar jcvf archive.tar.bz2   dir/

 

Fermare il computer

Riavviare il computer

reboot   or shutdown -h now or restart

Fermare il computer tra un ora

shutdown -h +60    

Spegnere il compiutere alle 12:00

shutdown -h 12:00

Keyboard - Tastiera

Cambiare il layout della tastiera

sudo dpkg-reconfigure keyboard-configuration

cambiare il layout della tastiera da terminale

setxkbmap it

-------

per ascoltare musica senza consumare risorse

utilizzare un file manager associato al programma da riga di commando:

mpg123

GNU/Linux Advanced Administration direct link.

.

Informazioni  sul hardware

post dedicati:

cat /proc/cpuinfo      # Controllare i dettagli del processore via terminale

Per ottenere informazioni sul hardware del sistema si possono usare i segg command can be used:

dmidecode

dmidecode legge le informazioni dal BIOS http://www.nongnu.org/dmidecode/.

Altri comandi utili per verificare i componenti harware installati sono:

dmesg lsdev lshal lspci lsusb lsscsi

lspci   ( usr/bis/lspci)     # visualizzare schede PCI

cat /proc/pci |grep 5263    # per determinare se esiste ULi M5263 Ethernet controller
lshw             #   Elencare le risorse hardware

Oppure installare hardinfo un utile tools per controllare il sistema

ed eseguire benchmarks

sudo apt-get install hardinfo

-------

Determinale UUID

per conoscere l'UUID di tutte le partizioni

sudo /sbin/blkid  ( prefribile )

o

ls -lah /dev/disk/by-uuid

di una specifica partizione:

vol_id -u /dev/hdc2

.

Server X

post dedicati:

Avvio server X

startx

per avviare una nuova sessione grafica selezionare un nuova

console terminale  CRTL-ALT F3

startx -- :1

Eseguire applicazione X su client linux remoto 

Visualizzare su computer linux che funzionerà da client un applicazione X che viene eseguita su computer linux remoto.

aprire una connessione ssh:

ssh -X utente@computerserver

quindi ditare il nome dell'applicazione

es: firefox - krusader - gimp

per avviare il windows manager completo digitare

exec gnome-session

perchè il client visualizzi correttamente gli applicativi X

in  /etc/ssh/sshd_config ci devono essere le seguenti impostazioni:

X11Forwarding yes

X11DisplayOffset 10

e la variabile DISPLAY  deve essere localhost:10.0

per controllare:

cat /etc/ssh/sshd_config |grep X11Forwarding
X11Forwarding yes
cat /etc/ssh/sshd_config |grep X11Display
X11DisplayOffset 10
echo $DISPLAY
localhost:10.0

___________________

se appare il messsggio

X11 connection rejected because of wrong authentication.

controllare i permessi di .Xauthority

ls -l .Xauthority
Devi esserci sono tu come proprietario.
sudo chown tralce .Xauthority
sudo chgrp tralce .Xauthority

valutare anche la romozione .Xauthority se appare il messsggio

X11 connection rejected because of wrong authentication.

rm -f .Xauthority

Riavviare sshd

sudo /etc/init.d/sshd restart

.

Mount

post dedicati:

visualizzare i file systems

fsarchiver probe

mount di partizioni in fstab senza riavviare

mount -a

mount di singolo filesystem o partizione in fstab

mount  /media/VM    ## cioè  ( punto di mount )

o

mount /dev/sda14     ##  cioè (  filesystem   )

per smontare un filesystem

umount /media/VM

per forzare umount in caso di messaggio "device is busy"

umount -l /media/VM

 

il filesystem può essere indicato sia con UUID che con /dev/sdaX

Montaggio immagine ISO

mount -o loop -t iso9660 FC-1.C-2.iso /mnt/iso

Montaggio smb

mount -t cifs -o username=mausia //192.168.77.7/biblioteca mnt/www

o

mount -t smbfs -o username=mausia //192.168.77.7/biblioteca mnt/www

verrà richiesta password

Montaggio smb con inserimento della password

mount -t cifs -o username=eurotech,password='eurotech' //192.168.77.7/ext4  /mnt/amd2000asus/ext4

smb Centos 5.0

mount -o username=mausia //10.0.1.3/www /mnt/www

quindi verrà richiesta la password

successivamente è possibile creare un link simbolico del tipo

ln -s /mnt/<mounted-dir>  /dir/simbolica

Grub

Partizionare

post specifico:

fdisk /dev/sda

cfdisk

gparted

formattare

mkfs.ext3  /dev/sda7

mkfs  -t ext3  /dev/sda7

mkfs.ext3 -m 1/dev/hdb1

creates a file system with only 1% of its space reserved for the root user.

tune2fs -mcan be used to adjust the reserved blocks after data is loaded on the partition.

Per controllare se ci sono errori nel filesystem

fsck /dev/sda5

lvm - logical volume manager

gui per lvm

system-config-lvm

Recovery Software

TestDisk

.

Networking

post dedicati.

auto lo

iface lo inet loopback

#auto eth0

#iface eth0 inet dhcp

auto eth1

iface eth1 inet static

address 192.168.1.67

netmask 255.255.255.0

broadcast 192.168.1.255

network 192.168.1.0

gateway 192.168.1.1

---

ifdown eth0

ifdown eth1

ifup eth1

riavvia servizi di networking

sudo /etc/init.d/networking restart

Google Public DNS IP addresses: 8.8.8.8  8.8.4.4

mtr google.com

Hostname e Domini

hostname -  mostra o imposta il nome del host

domainname   mostra o imposta system's NIS/YP domain name

dnsdomainname  mostra il  system's DNS domain name

nisdomainname -mostra o imposta il  system's NIS/YP domain name

ypdomainname - show o  set the system's NIS/YP domain name

Windows manager

Avviare gnome

exec gnome  or exec gnome-session

Ubuntu

upgrade di versione

Digitare la combinazione Alt+F2 e scrivere update-manager -d

Controllare la versione con

java-version

Installazione applicativi e files

post dedicati:

controllare e risolvere eventuali errori o dipendenze rotte con:

sudo apt-get check sudo apt-get -f install

Errore nell'installazione di applicazione in Linux Ubuntu

Reading package lists... Error!
E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_natty-security_restricted_binary-i386_Packages
E: The package lists or status file could not be parsed or opened.

Problema risolto usando :

sudo rm /var/lib/apt/lists/* -vf

sudo apt-get update

sudo apt-cache search mysql 

Installare a .deb file

sudo dpkg -i package_file.deb

Rimuovere .deb file

sudo dpkg -r package_name

cercare pacchetto installato

dpkg -l libgtk[0-9]* | grep ^i

per  cercare un pacchetto installato in ubuntu debian si può utilizzare anche

aptitude search lshw
se si vuole limitare la ricerca ai soli installati 
aptitude search '~i mysql'

 

.

 

Compilazione

post dedicati:

 

I comandi da utilizzare per la compilazione in condizioni standard: nella directory specifica ./configure' ## per configurare il pacchetto per il proprio sistema o sh ./configure make ## per compilare il pacchetto . make install ## per installare i programmi make clean ## per rimuovere i binari del programma e files degli oggetti dlla directory sorgente

QEMU

per testare una ISO kvm -cdrom slax-6.1.2.iso -m 512

Screenshot con scrot e gpicview

base
scrot -d 2 screenshot.jpg

ottimale 
scrot -d 2 -q 95 -t 30 screenshot.jpeg -b -s && gpicview screenshot.jpeg

-d delay ( attesa 2 sec ) 
-q qualita default 75%
-b WM border
-t 30 thumbnails 

per selezionare un area 
scrot -d 2 screenshot.jpg -s

Catturare schermate a tempo prefissato

for i in {1..10}; do scrot nomefile-$i.png; sleep 5; done
o
while true ; do scrot nomefile_`date +%s`.png; sleep 5; done

un tools che integra scrot è Linux Deepin

CentOS 5

update

yum update

elenco gruppi ed elenco utenti

getent passwd

getent groups

cat /etc passwd

cat /etc groups

Caratteri speciali

cat *    # concatena tutti i file "normali"

cat .*   # concatena tutti i file "nascosti"

cat *.log     #concatena tutti i file che terminano con .log:

ls *.?    elenca tutti i file "regolari" che terminano con . ed un singolo carattere

Risorse: